home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / linux / pfkeyv2.h < prev    next >
C/C++ Source or Header  |  2008-10-24  |  10KB  |  359 lines

  1. /* PF_KEY user interface, this is defined by rfc2367 so
  2.  * do not make arbitrary modifications or else this header
  3.  * file will not be compliant.
  4.  */
  5.  
  6. #ifndef _LINUX_PFKEY2_H
  7. #define _LINUX_PFKEY2_H
  8.  
  9. #include <linux/types.h>
  10.  
  11. #define PF_KEY_V2        2
  12. #define PFKEYV2_REVISION    199806L
  13.  
  14. struct sadb_msg {
  15.     uint8_t        sadb_msg_version;
  16.     uint8_t        sadb_msg_type;
  17.     uint8_t        sadb_msg_errno;
  18.     uint8_t        sadb_msg_satype;
  19.     uint16_t    sadb_msg_len;
  20.     uint16_t    sadb_msg_reserved;
  21.     uint32_t    sadb_msg_seq;
  22.     uint32_t    sadb_msg_pid;
  23. } __attribute__((packed));
  24. /* sizeof(struct sadb_msg) == 16 */
  25.  
  26. struct sadb_ext {
  27.     uint16_t    sadb_ext_len;
  28.     uint16_t    sadb_ext_type;
  29. } __attribute__((packed));
  30. /* sizeof(struct sadb_ext) == 4 */
  31.  
  32. struct sadb_sa {
  33.     uint16_t    sadb_sa_len;
  34.     uint16_t    sadb_sa_exttype;
  35.     __be32        sadb_sa_spi;
  36.     uint8_t        sadb_sa_replay;
  37.     uint8_t        sadb_sa_state;
  38.     uint8_t        sadb_sa_auth;
  39.     uint8_t        sadb_sa_encrypt;
  40.     uint32_t    sadb_sa_flags;
  41. } __attribute__((packed));
  42. /* sizeof(struct sadb_sa) == 16 */
  43.  
  44. struct sadb_lifetime {
  45.     uint16_t    sadb_lifetime_len;
  46.     uint16_t    sadb_lifetime_exttype;
  47.     uint32_t    sadb_lifetime_allocations;
  48.     uint64_t    sadb_lifetime_bytes;
  49.     uint64_t    sadb_lifetime_addtime;
  50.     uint64_t    sadb_lifetime_usetime;
  51. } __attribute__((packed));
  52. /* sizeof(struct sadb_lifetime) == 32 */
  53.  
  54. struct sadb_address {
  55.     uint16_t    sadb_address_len;
  56.     uint16_t    sadb_address_exttype;
  57.     uint8_t        sadb_address_proto;
  58.     uint8_t        sadb_address_prefixlen;
  59.     uint16_t    sadb_address_reserved;
  60. } __attribute__((packed));
  61. /* sizeof(struct sadb_address) == 8 */
  62.  
  63. struct sadb_key {
  64.     uint16_t    sadb_key_len;
  65.     uint16_t    sadb_key_exttype;
  66.     uint16_t    sadb_key_bits;
  67.     uint16_t    sadb_key_reserved;
  68. } __attribute__((packed));
  69. /* sizeof(struct sadb_key) == 8 */
  70.  
  71. struct sadb_ident {
  72.     uint16_t    sadb_ident_len;
  73.     uint16_t    sadb_ident_exttype;
  74.     uint16_t    sadb_ident_type;
  75.     uint16_t    sadb_ident_reserved;
  76.     uint64_t    sadb_ident_id;
  77. } __attribute__((packed));
  78. /* sizeof(struct sadb_ident) == 16 */
  79.  
  80. struct sadb_sens {
  81.     uint16_t    sadb_sens_len;
  82.     uint16_t    sadb_sens_exttype;
  83.     uint32_t    sadb_sens_dpd;
  84.     uint8_t        sadb_sens_sens_level;
  85.     uint8_t        sadb_sens_sens_len;
  86.     uint8_t        sadb_sens_integ_level;
  87.     uint8_t        sadb_sens_integ_len;
  88.     uint32_t    sadb_sens_reserved;
  89. } __attribute__((packed));
  90. /* sizeof(struct sadb_sens) == 16 */
  91.  
  92. /* followed by:
  93.     uint64_t    sadb_sens_bitmap[sens_len];
  94.     uint64_t    sadb_integ_bitmap[integ_len];  */
  95.  
  96. struct sadb_prop {
  97.     uint16_t    sadb_prop_len;
  98.     uint16_t    sadb_prop_exttype;
  99.     uint8_t        sadb_prop_replay;
  100.     uint8_t        sadb_prop_reserved[3];
  101. } __attribute__((packed));
  102. /* sizeof(struct sadb_prop) == 8 */
  103.  
  104. /* followed by:
  105.     struct sadb_comb sadb_combs[(sadb_prop_len +
  106.         sizeof(uint64_t) - sizeof(struct sadb_prop)) /
  107.         sizeof(struct sadb_comb)]; */
  108.  
  109. struct sadb_comb {
  110.     uint8_t        sadb_comb_auth;
  111.     uint8_t        sadb_comb_encrypt;
  112.     uint16_t    sadb_comb_flags;
  113.     uint16_t    sadb_comb_auth_minbits;
  114.     uint16_t    sadb_comb_auth_maxbits;
  115.     uint16_t    sadb_comb_encrypt_minbits;
  116.     uint16_t    sadb_comb_encrypt_maxbits;
  117.     uint32_t    sadb_comb_reserved;
  118.     uint32_t    sadb_comb_soft_allocations;
  119.     uint32_t    sadb_comb_hard_allocations;
  120.     uint64_t    sadb_comb_soft_bytes;
  121.     uint64_t    sadb_comb_hard_bytes;
  122.     uint64_t    sadb_comb_soft_addtime;
  123.     uint64_t    sadb_comb_hard_addtime;
  124.     uint64_t    sadb_comb_soft_usetime;
  125.     uint64_t    sadb_comb_hard_usetime;
  126. } __attribute__((packed));
  127. /* sizeof(struct sadb_comb) == 72 */
  128.  
  129. struct sadb_supported {
  130.     uint16_t    sadb_supported_len;
  131.     uint16_t    sadb_supported_exttype;
  132.     uint32_t    sadb_supported_reserved;
  133. } __attribute__((packed));
  134. /* sizeof(struct sadb_supported) == 8 */
  135.  
  136. /* followed by:
  137.     struct sadb_alg sadb_algs[(sadb_supported_len +
  138.         sizeof(uint64_t) - sizeof(struct sadb_supported)) /
  139.         sizeof(struct sadb_alg)]; */
  140.  
  141. struct sadb_alg {
  142.     uint8_t        sadb_alg_id;
  143.     uint8_t        sadb_alg_ivlen;
  144.     uint16_t    sadb_alg_minbits;
  145.     uint16_t    sadb_alg_maxbits;
  146.     uint16_t    sadb_alg_reserved;
  147. } __attribute__((packed));
  148. /* sizeof(struct sadb_alg) == 8 */
  149.  
  150. struct sadb_spirange {
  151.     uint16_t    sadb_spirange_len;
  152.     uint16_t    sadb_spirange_exttype;
  153.     uint32_t    sadb_spirange_min;
  154.     uint32_t    sadb_spirange_max;
  155.     uint32_t    sadb_spirange_reserved;
  156. } __attribute__((packed));
  157. /* sizeof(struct sadb_spirange) == 16 */
  158.  
  159. struct sadb_x_kmprivate {
  160.     uint16_t    sadb_x_kmprivate_len;
  161.     uint16_t    sadb_x_kmprivate_exttype;
  162.     uint32_t    sadb_x_kmprivate_reserved;
  163. } __attribute__((packed));
  164. /* sizeof(struct sadb_x_kmprivate) == 8 */
  165.  
  166. struct sadb_x_sa2 {
  167.     uint16_t    sadb_x_sa2_len;
  168.     uint16_t    sadb_x_sa2_exttype;
  169.     uint8_t        sadb_x_sa2_mode;
  170.     uint8_t        sadb_x_sa2_reserved1;
  171.     uint16_t    sadb_x_sa2_reserved2;
  172.     uint32_t    sadb_x_sa2_sequence;
  173.     uint32_t    sadb_x_sa2_reqid;
  174. } __attribute__((packed));
  175. /* sizeof(struct sadb_x_sa2) == 16 */
  176.  
  177. struct sadb_x_policy {
  178.     uint16_t    sadb_x_policy_len;
  179.     uint16_t    sadb_x_policy_exttype;
  180.     uint16_t    sadb_x_policy_type;
  181.     uint8_t        sadb_x_policy_dir;
  182.     uint8_t        sadb_x_policy_reserved;
  183.     uint32_t    sadb_x_policy_id;
  184.     uint32_t    sadb_x_policy_priority;
  185. } __attribute__((packed));
  186. /* sizeof(struct sadb_x_policy) == 16 */
  187.  
  188. struct sadb_x_ipsecrequest {
  189.     uint16_t    sadb_x_ipsecrequest_len;
  190.     uint16_t    sadb_x_ipsecrequest_proto;
  191.     uint8_t        sadb_x_ipsecrequest_mode;
  192.     uint8_t        sadb_x_ipsecrequest_level;
  193.     uint16_t    sadb_x_ipsecrequest_reserved1;
  194.     uint32_t    sadb_x_ipsecrequest_reqid;
  195.     uint32_t    sadb_x_ipsecrequest_reserved2;
  196. } __attribute__((packed));
  197. /* sizeof(struct sadb_x_ipsecrequest) == 16 */
  198.  
  199. /* This defines the TYPE of Nat Traversal in use.  Currently only one
  200.  * type of NAT-T is supported, draft-ietf-ipsec-udp-encaps-06
  201.  */
  202. struct sadb_x_nat_t_type {
  203.     uint16_t    sadb_x_nat_t_type_len;
  204.     uint16_t    sadb_x_nat_t_type_exttype;
  205.     uint8_t        sadb_x_nat_t_type_type;
  206.     uint8_t        sadb_x_nat_t_type_reserved[3];
  207. } __attribute__((packed));
  208. /* sizeof(struct sadb_x_nat_t_type) == 8 */
  209.  
  210. /* Pass a NAT Traversal port (Source or Dest port) */
  211. struct sadb_x_nat_t_port {
  212.     uint16_t    sadb_x_nat_t_port_len;
  213.     uint16_t    sadb_x_nat_t_port_exttype;
  214.     __be16        sadb_x_nat_t_port_port;
  215.     uint16_t    sadb_x_nat_t_port_reserved;
  216. } __attribute__((packed));
  217. /* sizeof(struct sadb_x_nat_t_port) == 8 */
  218.  
  219. /* Generic LSM security context */
  220. struct sadb_x_sec_ctx {
  221.     uint16_t    sadb_x_sec_len;
  222.     uint16_t    sadb_x_sec_exttype;
  223.     uint8_t        sadb_x_ctx_alg;  /* LSMs: e.g., selinux == 1 */
  224.     uint8_t        sadb_x_ctx_doi;
  225.     uint16_t    sadb_x_ctx_len;
  226. } __attribute__((packed));
  227. /* sizeof(struct sadb_sec_ctx) = 8 */
  228.  
  229. /* Message types */
  230. #define SADB_RESERVED        0
  231. #define SADB_GETSPI        1
  232. #define SADB_UPDATE        2
  233. #define SADB_ADD        3
  234. #define SADB_DELETE        4
  235. #define SADB_GET        5
  236. #define SADB_ACQUIRE        6
  237. #define SADB_REGISTER        7
  238. #define SADB_EXPIRE        8
  239. #define SADB_FLUSH        9
  240. #define SADB_DUMP        10
  241. #define SADB_X_PROMISC        11
  242. #define SADB_X_PCHANGE        12
  243. #define SADB_X_SPDUPDATE    13
  244. #define SADB_X_SPDADD        14
  245. #define SADB_X_SPDDELETE    15
  246. #define SADB_X_SPDGET        16
  247. #define SADB_X_SPDACQUIRE    17
  248. #define SADB_X_SPDDUMP        18
  249. #define SADB_X_SPDFLUSH        19
  250. #define SADB_X_SPDSETIDX    20
  251. #define SADB_X_SPDEXPIRE    21
  252. #define SADB_X_SPDDELETE2    22
  253. #define SADB_X_NAT_T_NEW_MAPPING    23
  254. #define SADB_X_MIGRATE        24
  255. #define SADB_MAX        24
  256.  
  257. /* Security Association flags */
  258. #define SADB_SAFLAGS_PFS    1
  259. #define SADB_SAFLAGS_NOPMTUDISC    0x20000000
  260. #define SADB_SAFLAGS_DECAP_DSCP    0x40000000
  261. #define SADB_SAFLAGS_NOECN    0x80000000
  262.  
  263. /* Security Association states */
  264. #define SADB_SASTATE_LARVAL    0
  265. #define SADB_SASTATE_MATURE    1
  266. #define SADB_SASTATE_DYING    2
  267. #define SADB_SASTATE_DEAD    3
  268. #define SADB_SASTATE_MAX    3
  269.  
  270. /* Security Association types */
  271. #define SADB_SATYPE_UNSPEC    0
  272. #define SADB_SATYPE_AH        2
  273. #define SADB_SATYPE_ESP        3
  274. #define SADB_SATYPE_RSVP    5
  275. #define SADB_SATYPE_OSPFV2    6
  276. #define SADB_SATYPE_RIPV2    7
  277. #define SADB_SATYPE_MIP        8
  278. #define SADB_X_SATYPE_IPCOMP    9
  279. #define SADB_SATYPE_MAX        9
  280.  
  281. /* Authentication algorithms */
  282. #define SADB_AALG_NONE            0
  283. #define SADB_AALG_MD5HMAC        2
  284. #define SADB_AALG_SHA1HMAC        3
  285. #define SADB_X_AALG_SHA2_256HMAC    5
  286. #define SADB_X_AALG_SHA2_384HMAC    6
  287. #define SADB_X_AALG_SHA2_512HMAC    7
  288. #define SADB_X_AALG_RIPEMD160HMAC    8
  289. #define SADB_X_AALG_AES_XCBC_MAC    9
  290. #define SADB_X_AALG_NULL        251    /* kame */
  291. #define SADB_AALG_MAX            251
  292.  
  293. /* Encryption algorithms */
  294. #define SADB_EALG_NONE            0
  295. #define SADB_EALG_DESCBC        2
  296. #define SADB_EALG_3DESCBC        3
  297. #define SADB_X_EALG_CASTCBC        6
  298. #define SADB_X_EALG_BLOWFISHCBC        7
  299. #define SADB_EALG_NULL            11
  300. #define SADB_X_EALG_AESCBC        12
  301. #define SADB_X_EALG_AESCTR        13
  302. #define SADB_X_EALG_AES_CCM_ICV8    14
  303. #define SADB_X_EALG_AES_CCM_ICV12    15
  304. #define SADB_X_EALG_AES_CCM_ICV16    16
  305. #define SADB_X_EALG_AES_GCM_ICV8    18
  306. #define SADB_X_EALG_AES_GCM_ICV12    19
  307. #define SADB_X_EALG_AES_GCM_ICV16    20
  308. #define SADB_X_EALG_CAMELLIACBC        22
  309. #define SADB_EALG_MAX                   253 /* last EALG */
  310. /* private allocations should use 249-255 (RFC2407) */
  311. #define SADB_X_EALG_SERPENTCBC  252     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
  312. #define SADB_X_EALG_TWOFISHCBC  253     /* draft-ietf-ipsec-ciph-aes-cbc-00 */
  313.  
  314. /* Compression algorithms */
  315. #define SADB_X_CALG_NONE        0
  316. #define SADB_X_CALG_OUI            1
  317. #define SADB_X_CALG_DEFLATE        2
  318. #define SADB_X_CALG_LZS            3
  319. #define SADB_X_CALG_LZJH        4
  320. #define SADB_X_CALG_MAX            4
  321.  
  322. /* Extension Header values */
  323. #define SADB_EXT_RESERVED        0
  324. #define SADB_EXT_SA            1
  325. #define SADB_EXT_LIFETIME_CURRENT    2
  326. #define SADB_EXT_LIFETIME_HARD        3
  327. #define SADB_EXT_LIFETIME_SOFT        4
  328. #define SADB_EXT_ADDRESS_SRC        5
  329. #define SADB_EXT_ADDRESS_DST        6
  330. #define SADB_EXT_ADDRESS_PROXY        7
  331. #define SADB_EXT_KEY_AUTH        8
  332. #define SADB_EXT_KEY_ENCRYPT        9
  333. #define SADB_EXT_IDENTITY_SRC        10
  334. #define SADB_EXT_IDENTITY_DST        11
  335. #define SADB_EXT_SENSITIVITY        12
  336. #define SADB_EXT_PROPOSAL        13
  337. #define SADB_EXT_SUPPORTED_AUTH        14
  338. #define SADB_EXT_SUPPORTED_ENCRYPT    15
  339. #define SADB_EXT_SPIRANGE        16
  340. #define SADB_X_EXT_KMPRIVATE        17
  341. #define SADB_X_EXT_POLICY        18
  342. #define SADB_X_EXT_SA2            19
  343. /* The next four entries are for setting up NAT Traversal */
  344. #define SADB_X_EXT_NAT_T_TYPE        20
  345. #define SADB_X_EXT_NAT_T_SPORT        21
  346. #define SADB_X_EXT_NAT_T_DPORT        22
  347. #define SADB_X_EXT_NAT_T_OA        23
  348. #define SADB_X_EXT_SEC_CTX        24
  349. #define SADB_EXT_MAX            24
  350.  
  351. /* Identity Extension values */
  352. #define SADB_IDENTTYPE_RESERVED    0
  353. #define SADB_IDENTTYPE_PREFIX    1
  354. #define SADB_IDENTTYPE_FQDN    2
  355. #define SADB_IDENTTYPE_USERFQDN    3
  356. #define SADB_IDENTTYPE_MAX    3
  357.  
  358. #endif /* !(_LINUX_PFKEY2_H) */
  359.